sequenceDiagram
  Providers ->>+ LSIF provider: DefinitionsAndHover(textDocument, position)

  par
    LSIF provider ->>+ GraphQL API: LSIF.Ranges(position +/- W)
    GraphQL API  -->>- LSIF provider: ranges
  and
    LSIF provider ->>+ GraphQL API: LSIF.Definition+Hover(position)
    GraphQL API  -->>- LSIF provider: {definitions, hover text}
  end

  LSIF provider -->>- Providers: {definitions, hover text}

  alt if no hover text
    Providers        ->>+ Search provider: Hover(textDocument, position)
    Search provider  ->>+ Providers: Definition(textDocument, position)
    Providers       -->>- Search provider: definition
    Search provider  ->>+ GraphQL API: GetFileContent(definition)
    GraphQL API     -->>- Search provider: file content
    Search provider -->>- Providers: hover text
  end
